package cn.doitedu.day06

import java.io.File

import scala.io.Source

/**
 * 功能比File功能更丰富的一个包装类
 */
class RichFile(val file: File) {

  def read(): String = {
    //读取指定文件中的内容，并且返回一个字符串
    Source.fromFile(file).mkString
  }

}


object RichFile {



  def main(args: Array[String]): Unit = {

    //想要实现一个功能： 在File中添加一个read方法，将文件的内容全部返回

    val file = new File("data/words.txt")

    import MyPreDef._
    //程序在编译时，File类没有read方法，并且父类中也没有read方法
    //就是程序的上文中查找，有没有一个用implicit修饰的函数或方法，可以将file转成其他类型，并且这个类型中，有read方法（名称、参数个数、返回值类型都一致）
    //这样就可以直接调用对应的包装类中的read方法了
    //如果上文中有两个类型一样的方法和函数，有效会使用隐式转换函数
    val content: String = file.read()

    //显式转换（认为使用包装进行包装）
    //val richFile = new RichFile(file)
    //val content: String = richFile.read()
    println(content)

  }


}
